/**
 * @description 节流 （保证函数在一定时间内只执行一次）
 * @param {Function} func 函数
 * @param {number} limit 时间(单位毫秒)
 * @returns {(...args: any[]) => void} 节流后的函数
 */
const throttle = function (func: (...args: any[]) => void, limit: number): (...args: any[]) => void {
  let inThrottle: boolean;
  return function (this: any, ...args: any[]) {
    if (!inThrottle) {
      func.apply(this, args);
      inThrottle = true;
      setTimeout(() => (inThrottle = false), limit);
    }
  };
};

export default throttle;